// Author: wsfuyibing <682805@qq.com>
// Date: 2025-04-28

package kind

// GoodsState
// 商品状态.
type GoodsState int

const (
	_ GoodsState = iota
	GoodsStateForSale
	GoodsStateDisabled
)

var (
	goodsStateTexts = map[GoodsState]string{
		GoodsStateForSale:  "在售中",
		GoodsStateDisabled: "已下架",
	}
	goodsStateUndefined = ""

	goodsStateFlags = map[GoodsState]string{
		GoodsStateDisabled: "disabled",
		GoodsStateForSale:  "sale",
	}
	goodsStateUnknownFlag = "unknown"
)

func GoodsStateDict() []map[string]any {
	var res = make([]map[string]any, 0)
	for _, v := range []GoodsState{
		GoodsStateForSale,
		GoodsStateDisabled,
	} {
		res = append(res, map[string]any{
			"Key":   v,
			"Value": v.Text(),
		})
	}
	return res
}

func (o GoodsState) Flag() string {
	if str, ok := goodsStateFlags[o]; ok {
		return str
	}
	return goodsStateUnknownFlag
}

func (o GoodsState) Int() int { return int(o) }

func (o GoodsState) IsDisabled() bool { return o == GoodsStateDisabled }
func (o GoodsState) IsForSale() bool  { return o == GoodsStateForSale }

func (o GoodsState) Text() string {
	if str, ok := goodsStateTexts[o]; ok {
		return str
	}
	return goodsStateUndefined
}
